import axios from 'axios'
import { showLoading, hideLoading } from '@/util/load'
import { message } from '@/util/message'
import { getDomain } from '@/util/common'
// import router from '@/router'

// 创建一个 axios 实例
const service = axios.create({
    baseURL: getDomain(),
    timeout: 45000, //超时时间
    maxRedirects:0, // 重定向
    headers: { // header
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
    }
})

// 添加请求拦截器
service.interceptors.request.use(
    (config) => {
        showLoading() //加载loading
        // 在发送请求之前做些什么
        // config.data['isAjax'] = '1';
        return config
    },
    (error) => {
        // 对请求错误做些什么
        console.log(error)
        return Promise.reject()
    }
)

// 添加响应拦截器
service.interceptors.response.use(
    (response) => {
        setTimeout(() => {
            hideLoading();
        }, 200);
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        if (response.status === 200) {
            if (response.data.state == 1) {
                message('success', response.data.msg)
                return response.data.data;
            }else{

                message('error', response.data.msg)
                return Promise.reject(response.data.msg);
                
            }
            
        } else {
            console.log(response)
            message('error', '网络错误')
            return Promise.reject('网络错误');
        }
    },
    (error) => {
        setTimeout(() => {
            hideLoading();
        }, 200);
        // 超出 2xx 范围的状态码都会触发该函数。
        // 对响应错误做点什么
        // if(error.response && error.response.status === 302 && error.response.headers.location){
        //     // window.location.href = error.response.headers.location
        //     window.parent.postMessage(JSON.stringify({type:'reload',href:error.response.headers.location}), 'http://admin.jiosen.com')
        //     return Promise.reject(error)
        // }
        // //window.parent.location.reload();
        // // window.location.href = error.response.headers.location
        message('error', '网络错误')
        return Promise.reject('网络错误')
    }
)

export default service

